package chapter3_v4;

/**
 * @author mazouri
 * @create 2021-10-31 20:38
 */
public class _2 {
    public static void main(String[] args) {
        String s = "CABAAXBYA";
        System.out.println(a(s));
        System.out.println(b(s));

    }

    /**
     * 暴力匹配 求出在一段给定的文本中查找以A开始、以B结尾的子串的数量。
     *
     * @param s 文本
     * @return 个数
     */
    public static int a(String s) {
        int count = 0;
        for (int i = 0; i < s.length(); i++) {
            if (s.charAt(i) == 'A') {
                for (int j = i + 1; j < s.length(); j++) {
                    if (s.charAt(j) == 'B') count++;
                }
            }
        }
        return count;
    }


    /**
     * 以字符‘B’结尾的子串的个数等于字符‘B'左侧字符串中‘A’的数量。
     *
     * C A B A A X B Y A
     *
     * 第一个B左侧一个A 满足条件的有AB
     * 第二个B左侧三个B 满足条件的有ABAAXB,AAXB,AXB
     * 共四个
     */
    public static int b(String s) {
        int count = 0;
        int num = 0;
        for (int i = 0; i < s.length(); i++) {
            if (s.charAt(i) == 'A') num++;
            if (s.charAt(i) == 'B') count += num;
        }
        return count;
    }
}
